<?php
namespace Versal\SecurityBundle\Dao;
use Versal\SecurityBundle\Entity\Usuario;
use Versal\SecurityBundle\Entity\Password;
use Versal\SecurityBundle\Entity\Perfil;


/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 * Description of UserDao
 *
 * @author Jorge
 */
class LoginDao {
    //put your code here
    protected $conexion;
    
    public function __construct($conexion){
        $this->conexion = $conexion;
    }
	
    public function getConexion(){
        return $this->conexion;
    }
    
    public function getUsuario($username) {
        $conn = $this->getConexion();
        $result = $conn->fetchAssoc('select login_id, 
                                             login_username, 
                                             login_nombre,
                                             login_apepa,
                                             login_apema,
                                             login_fecultimoingr,
                                             login_fecactualizacion,
                                             login_creacion,
                                             login_email,
                                             login_dircalle,
                                             login_dirnumero,
                                             login_dircomuna,
                                             login_fonomovil,
                                             login_fonofijo
                                       from  login                                                                              
                                       where login_username = ?', array($username));
        //$outParam = $conn->fetchAssoc('select @errIdn as errIdn, @errGls as errGls');
        if(count($result) > 0){
            $usuario = new Usuario();
            $usuario->setUserId($result['login_id']);
            $usuario->setUsername($result['login_username']);
            $usuario->setNombre($result['login_nombre']);            
            $usuario->setApePaterno($result['login_apepa']);
            $usuario->setApeMaterno($result['login_apema']);
            $usuario->setFechaUltimoIngreso($result['login_fecultimoingr']);
            $usuario->setFechaActualizacion($result['login_fecactualizacion']);
            $usuario->setFechaCreacion($result['login_creacion']);
            $usuario->setEmail($result['login_email']);
            $usuario->setDirCalle($result['login_dircalle']);
            $usuario->setDirNumero($result['login_dirnumero']);
            $usuario->setDirComuna($result['login_dircomuna']);
            $usuario->setFonoMovil($result['login_fonomovil']);
            $usuario->setFonoFijo($result['login_fonofijo']);
            return $usuario;
        } else{
            return false;
        }                     
    }
    
    public function getPassword(Usuario $usuario){
        $conn = $this->getConexion();
        $result = $conn->fetchAssoc('select  p.pwd_id, 
        				     p.login_id,
                                             p.pwd_password,
                                             p.pwd_fechacrea, 
                                             p.pwd_fechanull,
                                             p.pwd_indnuevo                                             
                                       from  login_password p                                      
                                       where p.login_id = ? and
                                       p.pwd_fechacrea = (select MAX(b.pwd_fechacrea) 
                                                          from login_password b 
                                                          where b.login_id = p.login_id)', 
                                       array($usuario->getUserId()));
        //$outParam = $conn->fetchAssoc('select @errIdn as errIdn, @errGls as errGls');
        if(count($result) > 0){
            
            $password = new Password();
            $password->setPasswordId($result['pwd_id']);
            $password->setPassword($result['pwd_password']);
            $password->setFechaCreacion($result['pwd_fechacrea']);
            $password->setFechaNull($result['pwd_fechanull']);
            $password->setIndNuevo($result['pwd_indnuevo']);
            return $password;
            
        } else{
            return false;
        } 
    }
    
    public function getPerfilesUsuario(Usuario $usuario){
        $conn = $this->getConexion();
        $result = $conn->fetchAll('select perfil_id, 
                                          login_id, 
                                          apl_id, 
                                          rol_id 
                                    from  login_perfil 
                                    where login_id = ? ', 
                                    array($usuario->getUserId()));        
        //$outParam = $conn->fetchAssoc('select @errIdn as errIdn, @errGls as errGls');
        if(count($result) > 0){    
            $perfiles = array();
            foreach($result as $row){
                $perfil = new Perfil();
                $perfil->setPerfilId($row['perfil_id']);
                $perfil->setPerfil($row['rol_id']);
                $perfil->setIdApp($row['apl_id']);
                $perfiles[] = $perfil;
            }
            return $perfiles;
        } else{
            return false;
        }
        
    }              
}
